/* Arquivo fonte retirado do projeto SIGA-RENAPI sob Licença Pública Geral GNU,
 * adapatado para satisfazer as necessidades arquiteturais desta aplicação.
 */
package br.edu.ifrn.utils;

import java.text.Normalizer;

public class StringUtils {

    /**
     * retorna "" se a string for nula, vazia 
     * ou possuir somente espacos. Senao, retorna
     * a propria string
     */
    public static String checkNull(String str) {
        //se for nula ou vazia
        return (str == null)||(str.trim().equals("")) ? "" : str; 
    }
    /**
     * retorna "TRUE" se a string for nula, vazia 
     * ou possuir somente espacos. 
     */
    public static boolean isEmpty(String str) {
        //verifica a string informada
        String aux = checkNull(str);
        //retorna TRUE se ela for nula, vazia ou somente espacos
        return aux.equals(""); 
    }
    
    /**
     * Compara a igualdade entre duas Strings passadas como parâmetros 
     * 
     * 
     * @param str1
     * @param str2
     * @return <code>true</code> se as Strings passadas como parâmetros são iguais
     * 			<code>false</code> caso contrário
     */
    public static boolean isEquals(String str1, String str2){
    	return ((str1 == null && str2 == null) || (str1 != null && !str1.equals(str2)));
    }
    
    /**
     * Verifica se a string tem somente letras, acentuadas ou não, maiúsculas ou minúsculas, e espaço.
     * 
     * @param string string a ser avaliada
     * @return  <code>true</code> se a String for válida
     * 			<code>false</code> caso contrário
     */
    public static boolean temSomenteLetraEEspaco(String string) {
		return string.matches("^[a-zA-ZçÇáéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙãõñäëïöüÿÄËÏÖÜÃÕÑâêîôûÂÊÎÔÛ\\s]+$");
	}

    /**
     * Remove todos os acentos da string passada como parâmetro
     * 
     * @param acentuada string a ter os acentos removidos
     * @return nova string sem os acentos
     */
	public static String removerAcentos(String acentuada) {
		CharSequence cs = new StringBuilder(acentuada);
		return Normalizer.normalize(cs, Normalizer.Form.NFKD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
	}
    
    
}
